using System;
using System.CodeDom.Compiler;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
namespace Microsoft.Phone.Controls.Maps.PlatformServices
{
	[GeneratedCode("System.Runtime.Serialization", "4.0.0.0"), DebuggerStepThrough, DataContract(Name = "MapUriOptions", Namespace = "http://dev.virtualearth.net/webservices/v1/imagery")]
	internal class MapUriOptions : INotifyPropertyChanged
	{
		private Collection<string> DisplayLayersField;
		private SizeOfint ImageSizeField;
		private ImageType ImageTypeField;
		private bool PreventIconCollisionField;
		private MapStyle StyleField;
		private UriScheme UriSchemeField;
		private int? ZoomLevelField;
		public event PropertyChangedEventHandler PropertyChanged
		{
			[MethodImpl(32)]
			add
			{
				this.PropertyChanged = (PropertyChangedEventHandler)Delegate.Combine(this.PropertyChanged, value);
			}
			[MethodImpl(32)]
			remove
			{
				this.PropertyChanged = (PropertyChangedEventHandler)Delegate.Remove(this.PropertyChanged, value);
			}
		}
		[DataMember]
		internal Collection<string> DisplayLayers
		{
			get
			{
				return this.DisplayLayersField;
			}
			set
			{
				if (!object.ReferenceEquals(this.DisplayLayersField, value))
				{
					this.DisplayLayersField = value;
					this.RaisePropertyChanged("DisplayLayers");
				}
			}
		}
		[DataMember]
		internal SizeOfint ImageSize
		{
			get
			{
				return this.ImageSizeField;
			}
			set
			{
				if (!object.ReferenceEquals(this.ImageSizeField, value))
				{
					this.ImageSizeField = value;
					this.RaisePropertyChanged("ImageSize");
				}
			}
		}
		[DataMember]
		internal ImageType ImageType
		{
			get
			{
				return this.ImageTypeField;
			}
			set
			{
				if (!this.ImageTypeField.Equals(value))
				{
					this.ImageTypeField = value;
					this.RaisePropertyChanged("ImageType");
				}
			}
		}
		[DataMember]
		internal bool PreventIconCollision
		{
			get
			{
				return this.PreventIconCollisionField;
			}
			set
			{
				if (!this.PreventIconCollisionField.Equals(value))
				{
					this.PreventIconCollisionField = value;
					this.RaisePropertyChanged("PreventIconCollision");
				}
			}
		}
		[DataMember]
		internal MapStyle Style
		{
			get
			{
				return this.StyleField;
			}
			set
			{
				if (!this.StyleField.Equals(value))
				{
					this.StyleField = value;
					this.RaisePropertyChanged("Style");
				}
			}
		}
		[DataMember]
		internal UriScheme UriScheme
		{
			get
			{
				return this.UriSchemeField;
			}
			set
			{
				if (!this.UriSchemeField.Equals(value))
				{
					this.UriSchemeField = value;
					this.RaisePropertyChanged("UriScheme");
				}
			}
		}
		[DataMember]
		internal int? ZoomLevel
		{
			get
			{
				return this.ZoomLevelField;
			}
			set
			{
				if (!this.ZoomLevelField.Equals(value))
				{
					this.ZoomLevelField = value;
					this.RaisePropertyChanged("ZoomLevel");
				}
			}
		}
		protected void RaisePropertyChanged(string propertyName)
		{
			PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
			if (propertyChanged != null)
			{
				propertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
			}
		}
	}
}
